<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">

<title>MultiseatX - Community Ubuntu Documentation</title>
<script type="text/javascript" src="/moin_static192/common/js/common.js"></script>

<script type="text/javascript">
<!--
var search_hint = "Search";
//-->
</script>


<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static192/ubuntunew/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="/moin_static192/ubuntunew/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="/moin_static192/ubuntunew/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="/moin_static192/ubuntunew/css/projection.css">

<!-- css only for MS IE6/IE7 browsers -->
<!--[if lt IE 8]>
   <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="/moin_static192/ubuntunew/css/msie.css">
<![endif]-->





<link rel="Start" href="/community/UserDocumentation">
<link rel="Alternate" title="Wiki Markup" href="/community/MultiseatX?action=raw">
<link rel="Alternate" media="print" title="Print View" href="/community/MultiseatX?action=print">
<link rel="Search" href="/community/FindPage">
<link rel="Index" href="/community/TitleIndex">
<link rel="Glossary" href="/community/WordIndex">
<link rel="Help" href="/community/HelpOnFormatting">
</head>

<body  lang="en" dir="ltr">

<div id="round" class="roundme">
<img id="topcap" alt="" src="https://help.ubuntu.com/htdocs/ubuntunew/img/cap-top.png">
<div id="layout" class="container clear-block">
<div id="header">
<div id="logo-floater">
<h1><a href="http://help.ubuntu.com" title="Ubuntu Documentation"><img alt="Ubuntu" id="logo" src="https://help.ubuntu.com/htdocs/ubuntunew/img/logo.png" /></a></h1>
</div>

<noscript>
 <form action="http://www.google.com/cse" id="cse-search-box">
   <div>
     <input type="hidden" name="cx" value="004599128559784038176:vj_p0xo-nng" />
     <input type="hidden" name="ie" value="UTF-8" />
     <input type="text" name="q" size="27" />
     <input type="submit" name="sa" value="Search" />
   </div>
 </form>
</noscript>

<script>
 document.write('<form action="https://help.ubuntu.com/search.html" id="cse-search-box">');
 document.write('  <div>');
 document.write('    <input type="hidden" name="cof" value="FORID:9" />');
 document.write('    <input type="hidden" name="cx" value="004599128559784038176:vj_p0xo-nng" />');
 document.write('    <input type="hidden" name="ie" value="UTF-8" />');
 document.write('    <input type="text" name="q" size="27" />');
 document.write('    <input type="submit" name="sa" value="Search" />');
 document.write('  </div>');
 document.write('</form>');
</script>

<div id="sitename"><a href="https://help.ubuntu.com/community"><img src="https://help.ubuntu.com/htdocs/ubuntunew/img/help-faq.png" /><span>Community Documentation</span></a></div>
</div> <!--header-->
<ul id="loginbar"><li><a href="/community/MultiseatX?action=login" id="login" rel="nofollow">Login to Edit</a></li></ul>


<!--1-->
<div id="page" lang="en" dir="ltr">

<!--2-->

<div id="breadcrumbs">
<a href="https://help.ubuntu.com/">Ubuntu Documentation</a> &gt; <a href="https://help.ubuntu.com/community">Community Documentation</a> &gt; <a class="backlink" href="/community/MultiseatX?action=fullsearch&amp;context=180&amp;value=linkto%3A%22MultiseatX%22" rel="nofollow" title="Click to do a full-text search for this title">MultiseatX</a>
</div>


<ul id="pagelocation">
<li><a class="backlink" href="/community/MultiseatX?action=fullsearch&amp;context=180&amp;value=linkto%3A%22MultiseatX%22" rel="nofollow" title="Click to do a full-text search for this title">MultiseatX</a></li>
</ul>

<!--3--><div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
<span class="anchor" id="line-1"></span><div><table style="float:right;  font-size:0.9em;  width:40%;  background:#F1F1ED;  margin: 0 0 1em 1em;"><tbody><tr>  <td style="padding:0.5em;"><p class="line891"><div class="table-of-contents"><p class="table-of-contents-heading">Contents<ol><li>
<a href="#Ubuntu_11.04_.28Natty.29">Ubuntu 11.04 (Natty)</a></li><li>
<a href="#Ubuntu_10.04_.28Lucid.29">Ubuntu 10.04 (Lucid)</a><ol><li>
<a href="#Pulse_Audio">Pulse Audio</a></li></ol></li><li>
<a href="#Ubuntu_9.10_.28Karmic.29">Ubuntu 9.10 (Karmic)</a></li><li>
<a href="#Ubuntu_9.04_.28Jaunty_Jackalope.29">Ubuntu 9.04 (Jaunty Jackalope)</a></li><li>
<a href="#Ubuntu_8.10_.28Intrepid_Ibex.29">Ubuntu 8.10 (Intrepid Ibex)</a></li><li>
<a href="#Ubuntu_8.04_.28Hardy_Heron.29">Ubuntu 8.04 (Hardy Heron)</a></li><li>
<a href="#Ubuntu_7.10_.28Gutsy_Gibbon.29">Ubuntu 7.10 (Gutsy Gibbon)</a><ol><li>
<a href="#Xorg">Xorg</a><ol><li>
<a href="#KDE">KDE</a></li></ol></li></ol></li><li>
<a href="#Ubuntu_6.06_.28Dapper_Drake.29">Ubuntu 6.06 (Dapper Drake)</a><ol><li>
<a href="#Xorg_version">Xorg version</a><ol><li>
<a href="#Requirements_and_Outcomes">Requirements and Outcomes</a></li><li>
<a href="#Know_Your_Devices">Know Your Devices</a></li><li>
<a href="#Edit_.2BAC8-etc.2BAC8-X11.2BAC8-xorg.conf">Edit /etc/X11/xorg.conf</a></li><li>
<a href="#Edit_.2BAC8-etc.2BAC8-gdm.2BAC8-gdm.conf-custom">Edit /etc/gdm/gdm.conf-custom</a></li><li>
<a href="#Concluding_Remarks">Concluding Remarks</a></li></ol></li><li>
<a href="#Userful.27s_desktop-multiplier">Userful's desktop-multiplier</a></li></ol></li><li>
<a href="#Ubuntu_5.10_.28Breezy_Badger.29_and_Ubuntu_5.04_.28Hoary_Hedgehog.29">Ubuntu 5.10 (Breezy Badger) and Ubuntu 5.04 (Hoary Hedgehog)</a></li><li>
<a href="#Other_implementations">Other implementations</a></li><li>
<a href="#Known_to_be_working_hardware">Known to be working hardware</a></li></ol></li></ol></div></td>
</tr>
</tbody></table></div><span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line862">Multiseat X is where one machine is attached to several sets of keyboards, mice, and monitors, which can operate independently of each other -- each under the control of a different user. Contrast this with multi-<em>head</em> X, in which a single keyboard and mouse is associated with two or more screens. In theory, there are several different ways to achieve multi-seat; in practice there are very few approaches which are both simple and stable. <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867">
<h2 id="Ubuntu_11.04_.28Natty.29">Ubuntu 11.04 (Natty)</h2>
<span class="anchor" id="line-6"></span><p class="line874">The steps are practically the same as in 10.04. Please view the sample configurations files to compare relevant details. <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span><p class="line874">Multiseat sample for ATI 5850 and Intel Sandy Bridge 2600K Onboard graphics (Both using open source drivers) <span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span><p class="line874">/etc/X11/xorg.conf: <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line867"><a class="http" href="http://pastebin.com/YeCsnmhy">http://pastebin.com/YeCsnmhy</a> <span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span><p class="line874">/etc/kde4/kdm/kdmrc: <span class="anchor" id="line-15"></span><span class="anchor" id="line-16"></span><p class="line867"><a class="http" href="http://pastebin.com/AaFSsqgE">http://pastebin.com/AaFSsqgE</a> <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line867">
<h2 id="Ubuntu_10.04_.28Lucid.29">Ubuntu 10.04 (Lucid)</h2>
<span class="anchor" id="line-20"></span><p class="line862">The steps are the same as 9.10 -- GDM 2.30 and ConsoleKit 0.4.1 do not have native Multiseat support, nor will GDM lauch two static X sessions like it used to in 2.20.  If you do not want to use KDM, Multiseat branches exist for GDM and ConsoleKit; they are described here: <a class="http" href="http://permalink.gmane.org/gmane.comp.gnome.gdm.general/1859">http://permalink.gmane.org/gmane.comp.gnome.gdm.general/1859</a> <span class="anchor" id="line-21"></span><span class="anchor" id="line-22"></span><p class="line862">For a PPA containing patched builds of ConsoleKit; and GDM look here: <span class="anchor" id="line-23"></span><a class="https" href="https://launchpad.net/~a7x/+archive/multiseat">https://launchpad.net/~a7x/+archive/multiseat</a> <span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span><p class="line862">For xorg.conf, follow the steps in 9.10 below. If you are having problems with devices attached to the correct seats, or finding errors in <tt>/var/log/Xorg.[01].log</tt>, in addition to AutoEnableDevices=false, try: <span class="anchor" id="line-26"></span><span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><pre><span class="anchor" id="line-1"></span>  Option  "AutoAddDevices"  "false"</pre><span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><p class="line862">This kdmrc is slightly different than the example for 9.10, but allows the users of each seat to switch to their VT and get their session marked "ACTIVE" in ConsoleKit.  One seat gets display :0 with vt7, the other gets :1 with vt9. By pressing Ctrl+Alt+F7, the first seat will be marked active. You can verify the active seat by running: <tt>ck-list-sessions</tt>.  On the second seat, pressing Ctrl+Alt+F9 will then make it active. An active session allows that user to auto-mount USB devices, auto-run scanner software, etc. <span class="anchor" id="line-31"></span><span class="anchor" id="line-32"></span><p class="line874">/etc/kde4/kdm/kdmrc: <span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span><span class="anchor" id="line-35"></span><span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><span class="anchor" id="line-42"></span><span class="anchor" id="line-43"></span><span class="anchor" id="line-44"></span><span class="anchor" id="line-45"></span><span class="anchor" id="line-46"></span><span class="anchor" id="line-47"></span><span class="anchor" id="line-48"></span><span class="anchor" id="line-49"></span><span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span><span class="anchor" id="line-52"></span><span class="anchor" id="line-53"></span><span class="anchor" id="line-54"></span><span class="anchor" id="line-55"></span><span class="anchor" id="line-56"></span><span class="anchor" id="line-57"></span><span class="anchor" id="line-58"></span><span class="anchor" id="line-59"></span><pre><span class="anchor" id="line-1-1"></span>[General]
<span class="anchor" id="line-2"></span>StaticServers=:0,:1
<span class="anchor" id="line-3"></span>ReserveServers=:2,:3
<span class="anchor" id="line-4"></span>ServerVTs=7,9
<span class="anchor" id="line-5"></span>ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
<span class="anchor" id="line-6"></span>PidFile=/var/run/kdm.pid
<span class="anchor" id="line-7"></span>...
<span class="anchor" id="line-8"></span>
<span class="anchor" id="line-9"></span>[X-:0-Core]
<span class="anchor" id="line-10"></span>AutoLoginAgain=false
<span class="anchor" id="line-11"></span>AutoLoginDelay=0
<span class="anchor" id="line-12"></span>AutoLoginEnable=false
<span class="anchor" id="line-13"></span>AutoLoginLocked=false
<span class="anchor" id="line-14"></span>AutoLoginUser=
<span class="anchor" id="line-15"></span>ClientLogFile=.xsession-errors
<span class="anchor" id="line-16"></span>ServerVT=7
<span class="anchor" id="line-17"></span>ServerCmd=/usr/bin/X0 -sharevts -layout seat0 -isolateDevice PCI:1:0:0 -keeptty
<span class="anchor" id="line-18"></span>
<span class="anchor" id="line-19"></span>[X-:1-Core]
<span class="anchor" id="line-20"></span>AutoLoginAgain=false
<span class="anchor" id="line-21"></span>AutoLoginEnable=false
<span class="anchor" id="line-22"></span>AutoLoginLocked=false
<span class="anchor" id="line-23"></span>ClientLogFile=.xsession-errors
<span class="anchor" id="line-24"></span>ServerVT=9
<span class="anchor" id="line-25"></span>ServerCmd=/usr/bin/X1 -sharevts -novtswitch -layout seat1 -isolateDevice PCI:2:0:0 -keeptty</pre><span class="anchor" id="line-60"></span><span class="anchor" id="line-61"></span><p class="line862">Again, X0 and X1 are just symlinks to X. The <tt>ServerVT=</tt> variable is required as it is passed to the final command.  When viewed in <tt>ps&nbsp;aux&nbsp;|grep&nbsp;X[01]</tt> they should look something like this: <span class="anchor" id="line-62"></span><span class="anchor" id="line-63"></span><span class="anchor" id="line-64"></span><span class="anchor" id="line-65"></span><pre><span class="anchor" id="line-1-2"></span>root ... /usr/bin/X0 -sharevts -layout seat0 -isolateDevice PCI:1:0:0 -keeptty -nr -nolisten tcp :0 vt7 -auth /var/run/xauth/A:0-oRERAb
<span class="anchor" id="line-2-1"></span>root ... /usr/bin/X1 -sharevts -novtswitch -layout seat1 -isolateDevice PCI:2:0:0 -keeptty -nr -nolisten tcp :1 vt9 -auth /var/run/xauth/A:1-o9Y68b</pre><span class="anchor" id="line-66"></span><span class="anchor" id="line-67"></span><p class="line867">
<h3 id="Pulse_Audio">Pulse Audio</h3>
<span class="anchor" id="line-68"></span><p class="line874">If you have only one sound card, you may wish to run pulseaudio as a system daemon and not have it run once per user. <span class="anchor" id="line-69"></span><span class="anchor" id="line-70"></span><ol type="1"><li>Add any multiseat users to the "pulse-access" group <span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span><span class="anchor" id="line-73"></span><pre><span class="anchor" id="line-1-3"></span>sudo usermod -a -G pulse-access &lt;username&gt;</pre><span class="anchor" id="line-74"></span></li><li>Edit /etc/pulse/daemon.conf <span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span><span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><pre><span class="anchor" id="line-1-4"></span>daemonize = yes
<span class="anchor" id="line-2-2"></span>system-instance = yes</pre><span class="anchor" id="line-79"></span></li><li>Edit /etc/pulse/client.conf <span class="anchor" id="line-80"></span><span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span><pre><span class="anchor" id="line-1-5"></span>autospawn = no</pre><span class="anchor" id="line-83"></span></li><li>Edit /etc/default/pulseaudio <span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><span class="anchor" id="line-86"></span><pre><span class="anchor" id="line-1-6"></span>PULSEAUDIO_SYSTEM_START=1</pre><span class="anchor" id="line-87"></span><span class="anchor" id="line-88"></span></li></ol><p class="line874">If you have multiple sound cards and wish to route sound to each seat, this guide should be helpful: <span class="anchor" id="line-89"></span><span class="anchor" id="line-90"></span><p class="line867"><a class="http" href="http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/">http://disjunkt.com/jd/2010/en/multiseat-linux/multiseat-linux-system-wide-pulseaudio-for-routing-sounds-109/</a> <span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><p class="line867">
<h2 id="Ubuntu_9.10_.28Karmic.29">Ubuntu 9.10 (Karmic)</h2>
<span class="anchor" id="line-93"></span><p class="line862">GDM in 9.10 does not support multi-seat setups. If you manage to downgrade to gdm 2.20 it may still work like with 9.04, but you could also just install and use KDM instead (as posted on <a class="http" href="http://forum.ubuntuusers.de/topic/multiseat-in-karmic/#post-2264923">http://forum.ubuntuusers.de/topic/multiseat-in-karmic/#post-2264923</a>): <span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><p class="line874">First, set up your xorg.conf according to your devices and: <span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span><ol type="1"><li><p class="line862">Boot or switch into console mode to turn of X window system <tt>sudo&nbsp;stop&nbsp;gdm</tt>, then have Xorg's output an autoconfigurated xorg.conf <tt>Xorg&nbsp;-configure</tt>, copy it to /etc/X11/xorg.conf and modify: <span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span></li><li class="gap"><p class="line862">For each seat disable <a class="nonexistent" href="/community/AutoEnableDevices">AutoEnableDevices</a>: <span class="anchor" id="line-100"></span><span class="anchor" id="line-101"></span><span class="anchor" id="line-102"></span><span class="anchor" id="line-103"></span><span class="anchor" id="line-104"></span><span class="anchor" id="line-105"></span><span class="anchor" id="line-106"></span><span class="anchor" id="line-107"></span><span class="anchor" id="line-108"></span><span class="anchor" id="line-109"></span><span class="anchor" id="line-110"></span><pre><span class="anchor" id="line-1-7"></span>Section "ServerLayout"
<span class="anchor" id="line-2-3"></span>    Identifier  "seat_1"
<span class="anchor" id="line-3-1"></span>    Screen      0 "screen_1" 0 0
<span class="anchor" id="line-4-1"></span>    InputDevice "kbd_1a"
<span class="anchor" id="line-5-1"></span>    InputDevice "mouse_1"
<span class="anchor" id="line-6-1"></span>    Option      "AutoEnableDevices"     "false"
<span class="anchor" id="line-7-1"></span>    Option      "AutoAddDevices"        "true"
<span class="anchor" id="line-8-1"></span>    Option      "AllowEmptyInput"       "true"
<span class="anchor" id="line-9-1"></span>EndSection</pre><span class="anchor" id="line-111"></span><span class="anchor" id="line-112"></span></li><li class="gap">Note that PS/2 devices are now also managed by "evdev": <span class="anchor" id="line-113"></span><span class="anchor" id="line-114"></span><span class="anchor" id="line-115"></span><span class="anchor" id="line-116"></span><span class="anchor" id="line-117"></span><span class="anchor" id="line-118"></span><span class="anchor" id="line-119"></span><span class="anchor" id="line-120"></span><span class="anchor" id="line-121"></span><span class="anchor" id="line-122"></span><span class="anchor" id="line-123"></span><span class="anchor" id="line-124"></span><span class="anchor" id="line-125"></span><span class="anchor" id="line-126"></span><span class="anchor" id="line-127"></span><pre><span class="anchor" id="line-1-8"></span>Section "InputDevice"
<span class="anchor" id="line-2-4"></span>    Identifier  "kbd_1a"
<span class="anchor" id="line-3-2"></span># ps/2 since karmic:
<span class="anchor" id="line-4-2"></span>    Driver      "evdev"
<span class="anchor" id="line-5-2"></span># optionaly you can use /dev/input/by-id/*:
<span class="anchor" id="line-6-2"></span>    Option      "Device"        "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
<span class="anchor" id="line-7-2"></span>    Option      "XkbRules"      "xorg"
<span class="anchor" id="line-8-2"></span>    Option      "XkbModel"      "cymotionlinux"
<span class="anchor" id="line-9-2"></span>    Option      "Protocol"      "Standard"
<span class="anchor" id="line-10-1"></span>    Option      "XkbLayout"     "de"
<span class="anchor" id="line-11-1"></span>    Option      "XkbVariant"    "nodeadkeys"
<span class="anchor" id="line-12-1"></span>    Option      "XkbOptions"    "compose:rctrl"
<span class="anchor" id="line-13-1"></span>EndSection</pre><span class="anchor" id="line-128"></span><span class="anchor" id="line-129"></span></li><li class="gap"><p class="line862">You need to use "<a class="nonexistent" href="/community/GrabDevice">GrabDevice</a>" for mice: <span class="anchor" id="line-130"></span><span class="anchor" id="line-131"></span><span class="anchor" id="line-132"></span><span class="anchor" id="line-133"></span><span class="anchor" id="line-134"></span><span class="anchor" id="line-135"></span><span class="anchor" id="line-136"></span><span class="anchor" id="line-137"></span><span class="anchor" id="line-138"></span><span class="anchor" id="line-139"></span><span class="anchor" id="line-140"></span><pre><span class="anchor" id="line-1-9"></span>Section "InputDevice"
<span class="anchor" id="line-2-5"></span>    Identifier  "mouse_1"
<span class="anchor" id="line-3-3"></span># usb:
<span class="anchor" id="line-4-3"></span>    Driver      "evdev"
<span class="anchor" id="line-5-3"></span>    Option      "Device"        "/dev/input/by-id/usb-Logitech_USB_RECEIVER-event-mouse"
<span class="anchor" id="line-6-3"></span>    Option      "GrabDevice"    "on"
<span class="anchor" id="line-7-3"></span>    Option      "Buttons"       "12"
<span class="anchor" id="line-8-3"></span>    Option      "Resolution"    "800"
<span class="anchor" id="line-9-3"></span>EndSection</pre><span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span></li></ol><p class="line874">Then you can setup KDM to start multiple seats: <span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line874">/etc/kde4/kdm/kdmrc: <span class="anchor" id="line-145"></span><ul><li style="list-style-type:none"><span class="anchor" id="line-146"></span><span class="anchor" id="line-147"></span><span class="anchor" id="line-148"></span><span class="anchor" id="line-149"></span><span class="anchor" id="line-150"></span><span class="anchor" id="line-151"></span><span class="anchor" id="line-152"></span><span class="anchor" id="line-153"></span><span class="anchor" id="line-154"></span><span class="anchor" id="line-155"></span><span class="anchor" id="line-156"></span><span class="anchor" id="line-157"></span><span class="anchor" id="line-158"></span><span class="anchor" id="line-159"></span><span class="anchor" id="line-160"></span><span class="anchor" id="line-161"></span><span class="anchor" id="line-162"></span><pre><span class="anchor" id="line-1-10"></span>...
<span class="anchor" id="line-2-6"></span>[X-:0-Core]
<span class="anchor" id="line-3-4"></span>AutoLoginAgain=false
<span class="anchor" id="line-4-4"></span>AutoLoginDelay=0
<span class="anchor" id="line-5-4"></span>AutoLoginEnable=false
<span class="anchor" id="line-6-4"></span>AutoLoginLocked=false
<span class="anchor" id="line-7-4"></span>AutoLoginUser=
<span class="anchor" id="line-8-4"></span>ClientLogFile=.xsession-errors
<span class="anchor" id="line-9-4"></span>ServerCmd=/usr/bin/X1 :0 vt07 -audit 0 -isolateDevice PCI:1:0:0 -nolisten tcp -layout seat_1
<span class="anchor" id="line-10-2"></span>
<span class="anchor" id="line-11-2"></span>[X-:1-Core]
<span class="anchor" id="line-12-2"></span>AutoLoginAgain=false
<span class="anchor" id="line-13-2"></span>AutoLoginEnable=false
<span class="anchor" id="line-14-1"></span>AutoLoginLocked=false
<span class="anchor" id="line-15-1"></span>ClientLogFile=.xsession-errors
<span class="anchor" id="line-16-1"></span>ServerCmd=/usr/bin/X2 :1 vt05 -audit 0 -sharevts -isolateDevice PCI:3:5:0 -nolisten tcp -layout seat_2</pre><span class="anchor" id="line-163"></span><span class="anchor" id="line-164"></span></li></ul><p class="line874">The different binaries "X1" und "X2" mentioned are just symlinks to "X", this is only optional to make the seats distinguisheable in the process list. <span class="anchor" id="line-165"></span><span class="anchor" id="line-166"></span><p class="line867">
<h2 id="Ubuntu_9.04_.28Jaunty_Jackalope.29">Ubuntu 9.04 (Jaunty Jackalope)</h2>
<span class="anchor" id="line-167"></span><p class="line874">Setting up a multi-seat machine "manually" still works as described most recently for 8.10 below. Server flags that should be considered are <span class="anchor" id="line-168"></span><span class="anchor" id="line-169"></span><p class="line867"><span class="anchor" id="line-170"></span><span class="anchor" id="line-171"></span><span class="anchor" id="line-172"></span><span class="anchor" id="line-173"></span><span class="anchor" id="line-174"></span><pre><span class="anchor" id="line-1-11"></span>Option         "DefaultServerLayout" "seat0"
<span class="anchor" id="line-2-7"></span>Option         "AllowMouseOpenFail"  "true"
<span class="anchor" id="line-3-5"></span>Option         "AutoAddDevices"      "false"
<span class="anchor" id="line-4-5"></span>Option         "AutoEnableDevices"   "false"</pre><span class="anchor" id="line-175"></span><span class="anchor" id="line-176"></span><p class="line874">where seat0 is the identifier of the default server layout. If your primary screen shifts seemingly randomly from right to left, you might be affected by bug <span class="anchor" id="line-177"></span><ul><li><p class="line891"><a class="https" href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/153425">https://bugs.launchpad.net/ubuntu/+source/linux/+bug/153425</a> <span class="anchor" id="line-178"></span><span class="anchor" id="line-179"></span></li></ul><p class="line874">The workaround is to add "no-scroll" to the kernel boot parameters. If one of the screen is not properly initialized when X is started (the screen looks corrupted), try to remove the "splash" kernel boot parameter. <span class="anchor" id="line-180"></span><span class="anchor" id="line-181"></span><p class="line874">If you have only one video card with two outputs, you can follow this tutorial to obtain a dual seat computer: <span class="anchor" id="line-182"></span><ul><li><p class="line891"><a class="http" href="http://netpatia.blogspot.com/2009/06/multiseat-in-ubuntu-904.html">http://netpatia.blogspot.com/2009/06/multiseat-in-ubuntu-904.html</a> <span class="anchor" id="line-183"></span><span class="anchor" id="line-184"></span></li></ul><p class="line874">If you want plug and play multiseat with USB terminals, you can follow this guide: <span class="anchor" id="line-185"></span><ul><li><p class="line891"><a class="http" href="http://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/">http://plugable.com/2009/11/16/setting-up-usb-multiseat-with-displaylink-on-linux-gdm-up-to-2-20/</a> <span class="anchor" id="line-186"></span><span class="anchor" id="line-187"></span></li></ul><p class="line867">
<h2 id="Ubuntu_8.10_.28Intrepid_Ibex.29">Ubuntu 8.10 (Intrepid Ibex)</h2>
<span class="anchor" id="line-188"></span><p class="line874">Setting up a multi-seat machine "manually" still works pretty much as described in Bob Smith's articles: <span class="anchor" id="line-189"></span><ul><li><p class="line891"><a class="http" href="http://linuxgazette.net/124/smith.html">http://linuxgazette.net/124/smith.html</a> <span class="anchor" id="line-190"></span></li><li><p class="line891"><a class="http" href="http://www.linuxtoys.org/multiubuntu/multiubuntu.html">http://www.linuxtoys.org/multiubuntu/multiubuntu.html</a> <span class="anchor" id="line-191"></span><span class="anchor" id="line-192"></span></li></ul><p class="line862">One important thing to remember though is to add the following line to the X.org config file <em>/etc/X11/xorg.conf</em> in the "<a class="nonexistent" href="/community/ServerFlags">ServerFlags</a>" section: <span class="anchor" id="line-193"></span><span class="anchor" id="line-194"></span><p class="line867"><span class="anchor" id="line-195"></span><span class="anchor" id="line-196"></span><pre><span class="anchor" id="line-1-12"></span>Option "AutoAddDevices" "False"</pre><span class="anchor" id="line-197"></span><span class="anchor" id="line-198"></span><p class="line874">If you forget to do this, all the USB mice and keyboards will be "intelligently" added to the first seat (which is neat on a single seat system but fatal and frustrating for a multi-seat setup). <span class="anchor" id="line-199"></span><span class="anchor" id="line-200"></span><p class="line874">If you want to skip the messy parts, note that the guys at C3SL in Brazil have created a framework that automates the process of creating the multiseat setup for you. It is called "multiseat display manager" and there are requests to include it as a package in Ubuntu: <span class="anchor" id="line-201"></span><ul><li><p class="line891"><a class="http" href="http://brainstorm.ubuntu.com/idea/3442/">http://brainstorm.ubuntu.com/idea/3442/</a> <span class="anchor" id="line-202"></span></li><li><p class="line891"><a class="http" href="http://wiki.c3sl.ufpr.br/multiseat">http://wiki.c3sl.ufpr.br/multiseat</a> <span class="anchor" id="line-203"></span><span class="anchor" id="line-204"></span></li></ul><p class="line867">
<h2 id="Ubuntu_8.04_.28Hardy_Heron.29">Ubuntu 8.04 (Hardy Heron)</h2>
<span class="anchor" id="line-205"></span><p class="line874">The following HOWTO was tested and is known to work under 8.04 version. It uses just the default Xorg package and changes to the default configuration files (xorg.conf, gdm.conf, kdm.conf) and doesn't require any additional packages or software to be installed.  <span class="anchor" id="line-206"></span><span class="anchor" id="line-207"></span><p class="line867"><a class="http" href="http://wpkg.org/Configuring_multiseat_X_workstation">http://wpkg.org/Configuring_multiseat_X_workstation</a> <span class="anchor" id="line-208"></span><span class="anchor" id="line-209"></span><p class="line862">However, it's very important to know that the HOWTO style to configure such model is only recommended by people that really know what they're doing. The <a class="http" href="http://wiki.x.org/wiki/Development/Documentation/Multiseat">X.Org Foundation's wiki page</a> doesn't recommend such kind of intervention.  <span class="anchor" id="line-210"></span><span class="anchor" id="line-211"></span><p class="line867">
<h2 id="Ubuntu_7.10_.28Gutsy_Gibbon.29">Ubuntu 7.10 (Gutsy Gibbon)</h2>
<span class="anchor" id="line-212"></span><p class="line867">
<h3 id="Xorg">Xorg</h3>
<span class="anchor" id="line-213"></span><p class="line867">
<h4 id="KDE">KDE</h4>
<span class="anchor" id="line-214"></span><p class="line867">
<h2 id="Ubuntu_6.06_.28Dapper_Drake.29">Ubuntu 6.06 (Dapper Drake)</h2>
<span class="anchor" id="line-215"></span><span class="anchor" id="line-216"></span><p class="line874">There are two different implementations of Multiseat X available in 6.06. There is a rudimentary multiseat version in xorg 7.0 itself, as well as the desktop-multiplier package by Userful in multiverse. <span class="anchor" id="line-217"></span><span class="anchor" id="line-218"></span><p class="line867">
<h3 id="Xorg_version">Xorg version</h3>
<span class="anchor" id="line-219"></span><p class="line862">As of <tt class="backtick">xorg</tt> version 7.0/6.9 (7.0 is provided in Ubuntu 6.06), there is rudimentary multiseat support built into X. It is not well documented or mature, but many people are reporting successful multiseat configurations. The instructions given here for multiseat configuration are based on <a class="http" href="http://blog.chris.tylers.info/index.php?/archives/14-Multiseat-X-Under-X11R6.97.0.html">a mini-howto by Chris Tyler</a>, but contain further refinements over that approach. <span class="anchor" id="line-220"></span><span class="anchor" id="line-221"></span><ul><li style="list-style-type:none"><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> The most major difference between my configuration here and that suggested by Chris Tyler is the addition of a "dummy" X session. According to XOrg design documents, the first X session is responsible for managing certain global parameters which subsequent X sessions utilise. I decided to create a "dummy" X session just to fill this role, so that all subsequent X sessions would be equals. This worked spectacularly well for me: I could not get multiseat to work reliably without it, but it seems very solid with the addition of the "dummy" session. Details of this approach are given as the configuration is explained below. -- The Famous Brett Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-222"></span><span class="anchor" id="line-223"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="/!\" height="15" src="/moin_static192/ubuntunew/img/alert.png" title="/!\" width="15" /> </td>
  <td><p class="line862"> Much of this section is written in the first person, which isn't the best of ideas in a Wiki. I've felt the need to do this, since this documentation describes one particular successful experiment, rather than being a general set of instructions from first principles. Others are welcome to edit this section, of course, although you may want to offset your comments in a text box like this to distinguish your experiences from mine. -- The Famous Brett Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-224"></span><span class="anchor" id="line-225"></span></li></ul><p class="line867">
<h4 id="Requirements_and_Outcomes">Requirements and Outcomes</h4>
<span class="anchor" id="line-226"></span><p class="line874">You will require a separate keyboard, mouse, and graphics card for each seat. Graphics cards with dual outputs can not, in general, be used for separate seats using this method, although they can be used to create a seat with dual monitors. <span class="anchor" id="line-227"></span><span class="anchor" id="line-228"></span><ul><li style="list-style-type:none"><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> This limitation with regards to dual-output cards may well be driver-dependent. In my attempts to make the outputs on an NVidia 6200 card behave independently, I have found that the second X server always deactivates the other output. My guess is that the <tt class="backtick">nvidia</tt> driver is programmed in such a way that it presumes complete ownership of the device. There may be specific cards and drivers which <em>can</em> operate their outputs as separate X sessions. If anyone knows of such exceptions, please document them here. -- The Famous Brett Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-229"></span><span class="anchor" id="line-230"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> There is also another limitation concerned about the graphics card vendor. <em>This</em> multiseat solution only works with nvidia and matrox cards. We like to call it as <strong>hardware dependence</strong>, because it only works with a restricted set of hw. On the other hand we call <strong>hardware independence</strong> for the <a class="http" href="http://en.wikibooks.org/wiki/Multiterminal_with_Xephyr">Xephyr's solution</a>. -- <a class="nonexistent" href="/community/TiagoVignatti">TiagoVignatti</a> 2006-01-17 15:47:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-231"></span><span class="anchor" id="line-232"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> This solution works for me with the onboard nvidia graphics and a Happauge PVR-350's video out.  I would expect that if # seats = # graphics cards, then this method should work most any hardware... -- madrivereric 2011-12-13 09:32:16</td>
</tr>
</tbody></table></div><span class="anchor" id="line-233"></span><span class="anchor" id="line-234"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> Sometimes there will not be a keyboard/mouse for one or more of the seats, such as when one of the seats is for a MythTV frontend which is controlled via LIRC or some other means.  In this situation, the void device can be used.  This device  is not loaded by default, but is available via the package <em>xserver-xorg-input-void</em> -- madrivereric 2011-12-13 09:32:16</td>
</tr>
</tbody></table></div><span class="anchor" id="line-235"></span><span class="anchor" id="line-236"></span></li></ul><p class="line862">The outcome will be several separate "X terminals" attached to a common host. Each terminal will start with a separate, independent <tt class="backtick">gdm</tt> login screen. Only the keyboards, mice, and monitors are managed, however: nothing in this configuration causes other devices (such as removable media and audio) to be cleverly allocated to specific logged-in users. Note also that this multiseat configuration results in the loss of text-mode virtual terminals: it will not be possible for any user to switch to text mode using ALT-Fn keystrokes while multiseat X is in operation. <span class="anchor" id="line-237"></span><span class="anchor" id="line-238"></span><ul><li style="list-style-type:none"><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> Another thing that I lost unexpectedly was video overlays. I'm not entirely sure why this happened: it may be a quirk of the <tt class="backtick">nvidia</tt> driver. OpenGL graphics continued to work well. -- The Famous Brett Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-239"></span><span class="anchor" id="line-240"></span></li></ul><p class="line874">The configuration process will involve manual editing of the "xorg.conf" and "gdm.conf-custom" files. Misconfiguring these files can result in loss of the graphical user interface, or (in severe cases) a system which locks itself up. Some prior experience with this kind of configuration editing will be helpful. On the plus side, there's no need for any additional software: this is purely a matter of configuration. <span class="anchor" id="line-241"></span><span class="anchor" id="line-242"></span><p class="line867">
<h4 id="Know_Your_Devices">Know Your Devices</h4>
<span class="anchor" id="line-243"></span><p class="line862">In the <tt class="backtick">xorg</tt> configuration, we will have to identify particular graphics devices and input devices. We start by finding them in our system, and making a note of their addresses. The graphic devices can be identified with the shell command "lspci | grep VGA". The following example shows the results of this when executed on my system. <span class="anchor" id="line-244"></span><span class="anchor" id="line-245"></span><p class="line867"><span class="anchor" id="line-246"></span><span class="anchor" id="line-247"></span><span class="anchor" id="line-248"></span><span class="anchor" id="line-249"></span><pre><span class="anchor" id="line-1-13"></span>famous@homer:~$ lspci | grep VGA
<span class="anchor" id="line-2-8"></span>0000:00:05.0 VGA compatible controller: nVidia Corporation C51 PCI Express Bridge (rev a2)
<span class="anchor" id="line-3-6"></span>0000:02:00.0 VGA compatible controller: nVidia Corporation GeForce 6200 TurboCache(TM) (rev a1)</pre><span class="anchor" id="line-250"></span><span class="anchor" id="line-251"></span><p class="line862">This shows an NVidia 6100 graphics chipset on the motherboard, and an NVidia 6200 graphics card in the PCI-x16 slot. In the terminology of <tt class="backtick">xorg.conf</tt>, these devices are addressed as "PCI<tt class="backtick"></tt>:0:5:0" and "PCI<tt class="backtick"></tt>:2:0:0" respectively (rather than "0000:00:05.0" and "0000:02:00.0" as seen in the output of <tt class="backtick">lspci</tt>). <span class="anchor" id="line-252"></span><span class="anchor" id="line-253"></span><p class="line874">Additionally, we need to locate and identify the input devices in the system. The available devices can be seen with the command "cat /proc/bus/input/devices". The following example shows the results of this when executed on my system. <span class="anchor" id="line-254"></span><span class="anchor" id="line-255"></span><p class="line867"><span class="anchor" id="line-256"></span><span class="anchor" id="line-257"></span><span class="anchor" id="line-258"></span><span class="anchor" id="line-259"></span><span class="anchor" id="line-260"></span><span class="anchor" id="line-261"></span><span class="anchor" id="line-262"></span><span class="anchor" id="line-263"></span><span class="anchor" id="line-264"></span><span class="anchor" id="line-265"></span><span class="anchor" id="line-266"></span><span class="anchor" id="line-267"></span><span class="anchor" id="line-268"></span><span class="anchor" id="line-269"></span><span class="anchor" id="line-270"></span><span class="anchor" id="line-271"></span><span class="anchor" id="line-272"></span><span class="anchor" id="line-273"></span><span class="anchor" id="line-274"></span><span class="anchor" id="line-275"></span><span class="anchor" id="line-276"></span><span class="anchor" id="line-277"></span><span class="anchor" id="line-278"></span><span class="anchor" id="line-279"></span><span class="anchor" id="line-280"></span><span class="anchor" id="line-281"></span><span class="anchor" id="line-282"></span><span class="anchor" id="line-283"></span><span class="anchor" id="line-284"></span><span class="anchor" id="line-285"></span><span class="anchor" id="line-286"></span><span class="anchor" id="line-287"></span><span class="anchor" id="line-288"></span><span class="anchor" id="line-289"></span><span class="anchor" id="line-290"></span><span class="anchor" id="line-291"></span><span class="anchor" id="line-292"></span><span class="anchor" id="line-293"></span><span class="anchor" id="line-294"></span><span class="anchor" id="line-295"></span><span class="anchor" id="line-296"></span><span class="anchor" id="line-297"></span><span class="anchor" id="line-298"></span><span class="anchor" id="line-299"></span><span class="anchor" id="line-300"></span><span class="anchor" id="line-301"></span><pre><span class="anchor" id="line-1-14"></span>famous@homer:~$ cat /proc/bus/input/devices
<span class="anchor" id="line-2-9"></span>I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
<span class="anchor" id="line-3-7"></span>N: Name="AT Translated Set 2 keyboard"
<span class="anchor" id="line-4-6"></span>P: Phys=isa0060/serio0/input0
<span class="anchor" id="line-5-5"></span>S: Sysfs=/class/input/input0
<span class="anchor" id="line-6-5"></span>H: Handlers=kbd event0
<span class="anchor" id="line-7-5"></span>B: EV=120013
<span class="anchor" id="line-8-5"></span>B: KEY=402000000 3802078f840d001 f2ffffdfffefffff fffffffffffffffe
<span class="anchor" id="line-9-5"></span>B: MSC=10
<span class="anchor" id="line-10-3"></span>B: LED=7
<span class="anchor" id="line-11-3"></span>
<span class="anchor" id="line-12-3"></span>I: Bus=0003 Vendor=0a81 Product=0205 Version=0010
<span class="anchor" id="line-13-3"></span>N: Name="CHESEN PS2 to USB Converter"
<span class="anchor" id="line-14-2"></span>P: Phys=usb-0000:00:0b.1-1.2/input0
<span class="anchor" id="line-15-2"></span>S: Sysfs=/class/input/input1
<span class="anchor" id="line-16-2"></span>H: Handlers=kbd event1
<span class="anchor" id="line-17-1"></span>B: EV=120003
<span class="anchor" id="line-18-1"></span>B: KEY=1000000000007 ff800000000007ff febeffdfffefffff fffffffffffffffe
<span class="anchor" id="line-19-1"></span>B: LED=7
<span class="anchor" id="line-20-1"></span>
<span class="anchor" id="line-21-1"></span>I: Bus=0003 Vendor=0a81 Product=0205 Version=0010
<span class="anchor" id="line-22-1"></span>N: Name="CHESEN PS2 to USB Converter"
<span class="anchor" id="line-23-1"></span>P: Phys=usb-0000:00:0b.1-1.2/input1
<span class="anchor" id="line-24-1"></span>S: Sysfs=/class/input/input2
<span class="anchor" id="line-25-1"></span>H: Handlers=kbd mouse0 event2 ts0
<span class="anchor" id="line-26"></span>B: EV=7
<span class="anchor" id="line-27"></span>B: KEY=1f001f 20000 3878d801d101 1e000000000000 0
<span class="anchor" id="line-28"></span>B: REL=103
<span class="anchor" id="line-29"></span>
<span class="anchor" id="line-30"></span>I: Bus=0010 Vendor=001f Product=0001 Version=0100
<span class="anchor" id="line-31"></span>N: Name="PC Speaker"
<span class="anchor" id="line-32"></span>P: Phys=isa0061/input0
<span class="anchor" id="line-33"></span>S: Sysfs=/class/input/input3
<span class="anchor" id="line-34"></span>H: Handlers=kbd event3
<span class="anchor" id="line-35"></span>B: EV=40001
<span class="anchor" id="line-36"></span>B: SND=6
<span class="anchor" id="line-37"></span>
<span class="anchor" id="line-38"></span>I: Bus=0011 Vendor=0002 Product=0006 Version=0039
<span class="anchor" id="line-39"></span>N: Name="ImExPS/2 Logitech Explorer Mouse"
<span class="anchor" id="line-40"></span>P: Phys=isa0060/serio1/input0
<span class="anchor" id="line-41"></span>S: Sysfs=/class/input/input4
<span class="anchor" id="line-42"></span>H: Handlers=mouse1 event4 ts1
<span class="anchor" id="line-43"></span>B: EV=7
<span class="anchor" id="line-44"></span>B: KEY=1f0000 0 0 0 0
<span class="anchor" id="line-45"></span>B: REL=103</pre><span class="anchor" id="line-302"></span><span class="anchor" id="line-303"></span><p class="line874">In this output, the first item is the main keyboard (connected to the motherboard keyboard port), the second item is a keyboard connected via a PS2-to-USB adapter, the third item is a mouse connected via the same PS2-to-USB adapter (note that its "Handlers" line includes "mouse0"), the fourth item is the PC speaker (I have no idea why this qualifies as an input device), and the last item is the main mouse (connected to the motherboard mouse port). <span class="anchor" id="line-304"></span><span class="anchor" id="line-305"></span><p class="line874">The above information will be necessary when configuring certain aspects of "xorg.conf". <span class="anchor" id="line-306"></span><span class="anchor" id="line-307"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> If you want to configure a multiseat system for more than two seats it might be quite difficult to find out proper keyboard/mouse and display associations. With the help of some <a class="http" href="http://fabis-site.net/code/Multiseat.tar.gz">python scripts</a> this can be done automatically. Just read the README file and follow the instructions. -- <a href="/community/FabianSteiner">FabianSteiner</a> 2006-09-16 18:04:20</td>
</tr>
</tbody></table></div><span class="anchor" id="line-308"></span><span class="anchor" id="line-309"></span><p class="line867">
<h4 id="Edit_.2BAC8-etc.2BAC8-X11.2BAC8-xorg.conf">Edit /etc/X11/xorg.conf</h4>
<span class="anchor" id="line-310"></span><p class="line862">I assume here that X has already been configured successfully for single-seat operation, as happens in a typical from-scratch installation of Ubuntu. Restricted drivers, such as the <tt class="backtick">nvidia</tt> driver, should be already installed and activated if they are being used. <span class="anchor" id="line-311"></span><span class="anchor" id="line-312"></span><p class="line874">Note that editing the "xorg.conf" file will require root privileges. I strongly suggest that you make a backup copy of the file before editing it, as such edits frequently result in errors which render X unable to start. When a backup file is available, worst case failures can be salvaged by booting the computer in "recovery" mode and restoring the backup. <span class="anchor" id="line-313"></span><span class="anchor" id="line-314"></span><p class="line874">With those preliminary notes out of the way, here are the modifications you need to make to "/etc/X11/xorg.conf". <span class="anchor" id="line-315"></span><span class="anchor" id="line-316"></span><p class="line874">Below the "files" section, insert a new section as follows. <span class="anchor" id="line-317"></span><span class="anchor" id="line-318"></span><p class="line867"><span class="anchor" id="line-319"></span><span class="anchor" id="line-320"></span><span class="anchor" id="line-321"></span><span class="anchor" id="line-322"></span><span class="anchor" id="line-323"></span><pre><span class="anchor" id="line-1-15"></span>Section "ServerFlags"
<span class="anchor" id="line-2-10"></span>        Option  "DontVTSwitch"
<span class="anchor" id="line-3-8"></span>        Option  "HandleSpecialKeys" "Always"
<span class="anchor" id="line-4-7"></span>EndSection</pre><span class="anchor" id="line-324"></span><span class="anchor" id="line-325"></span><p class="line862">The "Dont<tt class="backtick"></tt>VT<tt class="backtick"></tt>Switch" option prevents the "ALT-Fn" keystrokes from changing virtual terminals. As discussed earlier, such switching is incompatible with multiseat operation, since <em>all</em> seats would be affected by it. The "Handle<tt class="backtick"></tt>Special<tt class="backtick"></tt>Keys" option is included to allow the "CTRL-ALT-Backspace" keystroke to reset the X session. It seems reasonable to allow this, since it does operate independently in each seat. Normally it isn't necessary to include this option, as certain other keyboard settings bring it into effect. It seems to be necessary given the keyboard settings used in multi-seat, however. <span class="anchor" id="line-326"></span><span class="anchor" id="line-327"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> Xorg 7.4 started using the HAL to manage the input devices and ignores these settings in the xorg.conf file.  The automatic configuration broke a previously working multi-seat system because the input devices were incorrectly assigned to the different seats.  I resolved this with the server flag <em>Option  "<a class="nonexistent" href="/community/AutoAddDevices">AutoAddDevices</a>" "false"</em> Note that I'm not using evdev in my setup, but believe that this may allow evdev to work for newer X.org servers... -- madrivereric 2011-12-13 09:32:16</td>
</tr>
</tbody></table></div><span class="anchor" id="line-328"></span><span class="anchor" id="line-329"></span><p class="line862">A little further down the file there should be two "Input<tt class="backtick"></tt>Device" sections: one for "Generic Keyboard", one for "Configured Mouse". Below these we will need to add input device descriptions for the keyboards and mice in our multiseat layout. I added the following specifications. <span class="anchor" id="line-330"></span><span class="anchor" id="line-331"></span><p class="line867"><span class="anchor" id="line-332"></span><span class="anchor" id="line-333"></span><span class="anchor" id="line-334"></span><span class="anchor" id="line-335"></span><span class="anchor" id="line-336"></span><span class="anchor" id="line-337"></span><span class="anchor" id="line-338"></span><span class="anchor" id="line-339"></span><span class="anchor" id="line-340"></span><span class="anchor" id="line-341"></span><span class="anchor" id="line-342"></span><span class="anchor" id="line-343"></span><span class="anchor" id="line-344"></span><span class="anchor" id="line-345"></span><span class="anchor" id="line-346"></span><span class="anchor" id="line-347"></span><span class="anchor" id="line-348"></span><span class="anchor" id="line-349"></span><span class="anchor" id="line-350"></span><span class="anchor" id="line-351"></span><span class="anchor" id="line-352"></span><span class="anchor" id="line-353"></span><span class="anchor" id="line-354"></span><span class="anchor" id="line-355"></span><span class="anchor" id="line-356"></span><span class="anchor" id="line-357"></span><pre><span class="anchor" id="line-1-16"></span>Section "InputDevice"
<span class="anchor" id="line-2-11"></span>        Identifier      "Keyboard.0"    # Intended to be the main keyboard port
<span class="anchor" id="line-3-9"></span>        Driver          "evdev"
<span class="anchor" id="line-4-8"></span>        Option          "Phys"          "isa0060/serio0/input0"
<span class="anchor" id="line-5-6"></span>EndSection
<span class="anchor" id="line-6-6"></span>
<span class="anchor" id="line-7-6"></span>Section "InputDevice"
<span class="anchor" id="line-8-6"></span>        Identifier      "Mouse.0"       # Intended to be the PS/2 mouse port
<span class="anchor" id="line-9-6"></span>        Driver          "evdev"
<span class="anchor" id="line-10-4"></span>        Option          "Phys"          "isa0060/serio1/input0"
<span class="anchor" id="line-11-4"></span>EndSection
<span class="anchor" id="line-12-4"></span>
<span class="anchor" id="line-13-4"></span>Section "InputDevice"
<span class="anchor" id="line-14-3"></span>        Identifier      "Keyboard.1"    # Intended to be the keyboard on the USB converter
<span class="anchor" id="line-15-3"></span>        Driver          "evdev"
<span class="anchor" id="line-16-3"></span>        Option          "Name"          "* PS2 to USB Converter"
<span class="anchor" id="line-17-2"></span>        Option          "Phys"          "*/input0"
<span class="anchor" id="line-18-2"></span>EndSection
<span class="anchor" id="line-19-2"></span>
<span class="anchor" id="line-20-2"></span>Section "InputDevice"
<span class="anchor" id="line-21-2"></span>        Identifier      "Mouse.1"       # Intended to be the mouse on the USB converter
<span class="anchor" id="line-22-2"></span>        Driver          "evdev"
<span class="anchor" id="line-23-2"></span>        Option          "Name"          "* PS2 to USB Converter"
<span class="anchor" id="line-24-2"></span>        Option          "Phys"          "*/input1"
<span class="anchor" id="line-25-2"></span>EndSection</pre><span class="anchor" id="line-358"></span><span class="anchor" id="line-359"></span><p class="line874">Note that all these input device specifications use the "evdev" (event) driver. Such devices are specified by a form of pattern matching: you need to describe just enough about the device to uniquely distinguish it from other devices in the system. In the case of the built-in PS2 keyboard and mouse ports, the "Phys" (physical) description of the port is sufficiently distinct and constant, so that's relatively easy. In the case of the USB devices, the "Name" field provided a good way to identify the device as a whole, and the rightmost part of the "Phys" field was sufficient to distinguish between the keyboard and mouse components. Note the use of asterisks in those fields as wildcards for pattern matching. <span class="anchor" id="line-360"></span><span class="anchor" id="line-361"></span><p class="line862">Refer to the <tt class="backtick">xorg.conf</tt> manual page to see which additional options are available to identify input devices, and which of those options support pattern matching (also known as "globbing"). <span class="anchor" id="line-362"></span><span class="anchor" id="line-363"></span><ul><li style="list-style-type:none"><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> In my first attempt, I copied the "Xkb*" options from the "Generic Keyboard" into my keyboard configurations above, but found that this resulted in a mis-mapped keyboard, particularly for the cursor control keys. The best approach seems to be to leave out all options until they prove necessary or helpful. This has the nice side effect of making the config file easier to understand. -- The Famous Brett Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-364"></span><span class="anchor" id="line-365"></span><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> <a class="http" href="http://netpatia.blogspot.com/2006/09/multiseat-v-gdm-and-xkb.html">Here</a> you can find a solution to properly configure your xkb in a very similar configuration. -- <a class="https" href="https://help.ubuntu.com/community/jap1968">jap1968</a> 2006-09-08 23:56:00 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-366"></span><span class="anchor" id="line-367"></span></li></ul><p class="line874">Next up we will need to configure the display devices, including a "dummy" display device which acts as a sort of supervisor to all the other displays. One display device will already be configured: you can re-use it if you want to, or create a copy of it under a different name. My additional device sections were as follows. <span class="anchor" id="line-368"></span><span class="anchor" id="line-369"></span><p class="line867"><span class="anchor" id="line-370"></span><span class="anchor" id="line-371"></span><span class="anchor" id="line-372"></span><span class="anchor" id="line-373"></span><span class="anchor" id="line-374"></span><span class="anchor" id="line-375"></span><span class="anchor" id="line-376"></span><span class="anchor" id="line-377"></span><span class="anchor" id="line-378"></span><span class="anchor" id="line-379"></span><span class="anchor" id="line-380"></span><span class="anchor" id="line-381"></span><span class="anchor" id="line-382"></span><span class="anchor" id="line-383"></span><span class="anchor" id="line-384"></span><span class="anchor" id="line-385"></span><span class="anchor" id="line-386"></span><span class="anchor" id="line-387"></span><pre><span class="anchor" id="line-1-17"></span>Section "Device"
<span class="anchor" id="line-2-12"></span>        Identifier      "Dummy"
<span class="anchor" id="line-3-10"></span>        Driver          "dummy"
<span class="anchor" id="line-4-9"></span>        VideoRam        75
<span class="anchor" id="line-5-7"></span>EndSection
<span class="anchor" id="line-6-7"></span>
<span class="anchor" id="line-7-7"></span>Section "Device"
<span class="anchor" id="line-8-7"></span>        Identifier      "GeForce 6100"  # On-board
<span class="anchor" id="line-9-7"></span>        Driver          "nvidia"
<span class="anchor" id="line-10-5"></span>        BusID           "PCI:0:5:0"
<span class="anchor" id="line-11-5"></span>EndSection
<span class="anchor" id="line-12-5"></span>
<span class="anchor" id="line-13-5"></span>Section "Device"
<span class="anchor" id="line-14-4"></span>        Identifier      "GeForce 6200"  # PCI-x16 slot
<span class="anchor" id="line-15-4"></span>        Driver          "nvidia"
<span class="anchor" id="line-16-4"></span>        BusID           "PCI:2:0:0"
<span class="anchor" id="line-17-3"></span>EndSection</pre><span class="anchor" id="line-388"></span><span class="anchor" id="line-389"></span><p class="line862">You should copy the "Dummy" device specification exactly, but your actual physical devices will depend on your particular hardware setup. For the "Bus<tt class="backtick"></tt>ID" specification, refer to the output of "lspci" that you (should have) generated earlier. There may be other options you wish to add to these drivers, but don't add things unless they are actually necessary or helpful. Refer to the man page for your driver. (See <tt class="backtick">/usr/share/doc/nvidia-glx/README.txt.gz</tt> in the case of the restricted <tt class="backtick">nvidia</tt> driver.) <span class="anchor" id="line-390"></span><span class="anchor" id="line-391"></span><p class="line874">If you have special requirements with regards to monitors, you may need to add additional monitor specifications after the "Generic Monitor" specification that is included by default. Personally, I have obtained excellent results just by using the "Generic Monitor" description anywhere a monitor description is required. <span class="anchor" id="line-392"></span><span class="anchor" id="line-393"></span><p class="line874">Next, we need to add screen specifications for our multiseat setup. Below the pre-configured screen section called "Default Screen", I added the following screen specifications. <span class="anchor" id="line-394"></span><span class="anchor" id="line-395"></span><p class="line867"><span class="anchor" id="line-396"></span><span class="anchor" id="line-397"></span><span class="anchor" id="line-398"></span><span class="anchor" id="line-399"></span><span class="anchor" id="line-400"></span><span class="anchor" id="line-401"></span><span class="anchor" id="line-402"></span><span class="anchor" id="line-403"></span><span class="anchor" id="line-404"></span><span class="anchor" id="line-405"></span><span class="anchor" id="line-406"></span><span class="anchor" id="line-407"></span><span class="anchor" id="line-408"></span><span class="anchor" id="line-409"></span><span class="anchor" id="line-410"></span><span class="anchor" id="line-411"></span><span class="anchor" id="line-412"></span><span class="anchor" id="line-413"></span><span class="anchor" id="line-414"></span><span class="anchor" id="line-415"></span><span class="anchor" id="line-416"></span><span class="anchor" id="line-417"></span><span class="anchor" id="line-418"></span><span class="anchor" id="line-419"></span><span class="anchor" id="line-420"></span><span class="anchor" id="line-421"></span><span class="anchor" id="line-422"></span><span class="anchor" id="line-423"></span><span class="anchor" id="line-424"></span><span class="anchor" id="line-425"></span><pre><span class="anchor" id="line-1-18"></span>Section "Screen"
<span class="anchor" id="line-2-13"></span>        Identifier      "Dummy Screen"
<span class="anchor" id="line-3-11"></span>        Device          "Dummy"
<span class="anchor" id="line-4-10"></span>        Monitor         "Generic Monitor"
<span class="anchor" id="line-5-8"></span>        DefaultDepth    8
<span class="anchor" id="line-6-8"></span>        SubSection "Display"
<span class="anchor" id="line-7-8"></span>                Modes           "320x240"
<span class="anchor" id="line-8-8"></span>        EndSubSection
<span class="anchor" id="line-9-8"></span>EndSection
<span class="anchor" id="line-10-6"></span>
<span class="anchor" id="line-11-6"></span>Section "Screen"
<span class="anchor" id="line-12-6"></span>        Identifier      "Screen.0.0"
<span class="anchor" id="line-13-6"></span>        Device          "GeForce 6100"
<span class="anchor" id="line-14-5"></span>        Monitor         "Generic Monitor"
<span class="anchor" id="line-15-5"></span>        DefaultDepth    24
<span class="anchor" id="line-16-5"></span>        SubSection "Display"
<span class="anchor" id="line-17-4"></span>                Modes           "1280x1024" "1024x768" "800x600" "640x480"
<span class="anchor" id="line-18-3"></span>        EndSubSection
<span class="anchor" id="line-19-3"></span>EndSection
<span class="anchor" id="line-20-3"></span>
<span class="anchor" id="line-21-3"></span>Section "Screen"
<span class="anchor" id="line-22-3"></span>        Identifier      "Screen.1.0"
<span class="anchor" id="line-23-3"></span>        Device          "GeForce 6200"
<span class="anchor" id="line-24-3"></span>        Monitor         "Generic Monitor"
<span class="anchor" id="line-25-3"></span>        DefaultDepth    24
<span class="anchor" id="line-26-1"></span>        SubSection "Display"
<span class="anchor" id="line-27-1"></span>                Modes           "1280x1024" "1024x768" "800x600" "640x480"
<span class="anchor" id="line-28-1"></span>        EndSubSection
<span class="anchor" id="line-29-1"></span>EndSection</pre><span class="anchor" id="line-426"></span><span class="anchor" id="line-427"></span><p class="line874">Copy the "Dummy Screen" specification exactly, but adjust the others according to your hardware requirements (and the names you used for your device specifications earlier). It should be possible to have a seat with two screens here, which is why I've named the screens with two trailing numbers: the first number identifies the seat; the second number identifies the screen at that seat. <span class="anchor" id="line-428"></span><span class="anchor" id="line-429"></span><ul><li style="list-style-type:none"><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> The dummy screen specification is simply the smallest screen configuration I could think of. Nothing will ever be displayed on this screen, so the resolution is quite irrelevant, but I suspect the "dummy" driver allocates the memory required for it, which is why I made it small. I initially tried a depth of "1", but that doesn't work. The "dummy" driver isn't documented in Ubuntu, but it is available. -- The Famous Bret Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-430"></span><span class="anchor" id="line-431"></span></li></ul><p class="line874">Lastly, we need to add the all-important "layout" specifications. Below the pre-configured "Default Layout" specification, I added the following layouts. <span class="anchor" id="line-432"></span><span class="anchor" id="line-433"></span><p class="line867"><span class="anchor" id="line-434"></span><span class="anchor" id="line-435"></span><span class="anchor" id="line-436"></span><span class="anchor" id="line-437"></span><span class="anchor" id="line-438"></span><span class="anchor" id="line-439"></span><span class="anchor" id="line-440"></span><span class="anchor" id="line-441"></span><span class="anchor" id="line-442"></span><span class="anchor" id="line-443"></span><span class="anchor" id="line-444"></span><span class="anchor" id="line-445"></span><span class="anchor" id="line-446"></span><span class="anchor" id="line-447"></span><span class="anchor" id="line-448"></span><span class="anchor" id="line-449"></span><span class="anchor" id="line-450"></span><span class="anchor" id="line-451"></span><span class="anchor" id="line-452"></span><span class="anchor" id="line-453"></span><span class="anchor" id="line-454"></span><pre><span class="anchor" id="line-1-19"></span>Section "ServerLayout"
<span class="anchor" id="line-2-14"></span>        Identifier      "MultiSeat"
<span class="anchor" id="line-3-12"></span>        Screen          "Dummy Screen"
<span class="anchor" id="line-4-11"></span>        InputDevice     "Generic Keyboard"
<span class="anchor" id="line-5-9"></span>        InputDevice     "Configured Mouse"
<span class="anchor" id="line-6-9"></span>EndSection
<span class="anchor" id="line-7-9"></span>
<span class="anchor" id="line-8-9"></span>Section "ServerLayout"
<span class="anchor" id="line-9-9"></span>        Identifier      "Seat.0"
<span class="anchor" id="line-10-7"></span>        Screen          "Screen.0.0"
<span class="anchor" id="line-11-7"></span>        InputDevice     "Keyboard.0" "CoreKeyboard"
<span class="anchor" id="line-12-7"></span>        InputDevice     "Mouse.0" "CorePointer"
<span class="anchor" id="line-13-7"></span>EndSection
<span class="anchor" id="line-14-6"></span>
<span class="anchor" id="line-15-6"></span>Section "ServerLayout"
<span class="anchor" id="line-16-6"></span>        Identifier      "Seat.1"
<span class="anchor" id="line-17-5"></span>        Screen          "Screen.1.0"
<span class="anchor" id="line-18-4"></span>        InputDevice     "Keyboard.1" "CoreKeyboard"
<span class="anchor" id="line-19-4"></span>        InputDevice     "Mouse.1" "CorePointer"
<span class="anchor" id="line-20-4"></span>EndSection</pre><span class="anchor" id="line-455"></span><span class="anchor" id="line-456"></span><p class="line874">It should be possible to copy this exactly (for a two-seat system, at least) if you've also copied my naming conventions elsewhere so far. <span class="anchor" id="line-457"></span><span class="anchor" id="line-458"></span><ul><li style="list-style-type:none"><div><table><tbody><tr>  <td><p class="line862"> <img alt="(!)" height="15" src="/moin_static192/ubuntunew/img/idea.png" title="(!)" width="15" /> </td>
  <td><p class="line862"> I've seen comments elsewhere about a "void" input device, and I'd like to use such a device for the keyboard and mouse in the "Dummy Screen" layout, but it's not available in Ubuntu 6.06. In actual practice, there does not seem to be any problem with using the "Generic Keyboard" and "Configured Mouse", even though I have no idea what events (if any) these devices are generating in multiseat mode. -- The Famous Brett Watson 2006-06-22 09:51:25 </td>
</tr>
</tbody></table></div><span class="anchor" id="line-459"></span><span class="anchor" id="line-460"></span></li></ul><div><table><tbody><tr>  <td><p class="line862"> <img alt="{i}" height="16" src="/moin_static192/ubuntunew/img/icon-info.png" title="{i}" width="16" /> </td>
  <td><p class="line862"> For what ever reason, the "void" input device is not loaded by default in Ubuntu.   It is available via the package <em>xserver-xorg-input-void</em> -- madrivereric 2011-12-13 09:32:16</td>
</tr>
</tbody></table></div><span class="anchor" id="line-461"></span><span class="anchor" id="line-462"></span><p class="line874">Here ends the "xorg.conf" editing. Save your changes and quit the editor. <span class="anchor" id="line-463"></span><span class="anchor" id="line-464"></span><p class="line867">
<h4 id="Edit_.2BAC8-etc.2BAC8-gdm.2BAC8-gdm.conf-custom">Edit /etc/gdm/gdm.conf-custom</h4>
<span class="anchor" id="line-465"></span><p class="line874">Rather than edit "/etc/gdm/gdm.conf" directly, Ubuntu allows customisations to be placed in a separate file, "/etc/gdm/gdm.conf-custom". This will, of course, require root privileges to edit. Initially, this file will consist of a massive comment block explaining its purpose, followed by a number of section headers delimiting otherwise empty sections. <span class="anchor" id="line-466"></span><span class="anchor" id="line-467"></span><p class="line862">In the section called "daemon", add "VT<tt class="backtick"></tt>Allocation=false", like so. <span class="anchor" id="line-468"></span><span class="anchor" id="line-469"></span><p class="line867"><span class="anchor" id="line-470"></span><span class="anchor" id="line-471"></span><span class="anchor" id="line-472"></span><pre><span class="anchor" id="line-1-20"></span>[daemon]
<span class="anchor" id="line-2-15"></span>VTAllocation=false</pre><span class="anchor" id="line-473"></span><span class="anchor" id="line-474"></span><p class="line874">Automatic VT allocation is very clever for a single-seat system, but it can only cause pain on a multiseat setup, so we disable it. As an aside, it also means that we'll be explicitly declaring a VT for our X sessions. <span class="anchor" id="line-475"></span><span class="anchor" id="line-476"></span><p class="line874">In the section called "servers", add server specifications as follows. <span class="anchor" id="line-477"></span><span class="anchor" id="line-478"></span><p class="line867"><span class="anchor" id="line-479"></span><span class="anchor" id="line-480"></span><span class="anchor" id="line-481"></span><span class="anchor" id="line-482"></span><span class="anchor" id="line-483"></span><pre><span class="anchor" id="line-1-21"></span>[servers]
<span class="anchor" id="line-2-16"></span>0=MultiSeat
<span class="anchor" id="line-3-13"></span>1=Seat0
<span class="anchor" id="line-4-12"></span>2=Seat1</pre><span class="anchor" id="line-484"></span><span class="anchor" id="line-485"></span><p class="line874">These names refer to additional sections which we also add (at the end of the file) as follows. <span class="anchor" id="line-486"></span><span class="anchor" id="line-487"></span><p class="line867"><span class="anchor" id="line-488"></span><span class="anchor" id="line-489"></span><span class="anchor" id="line-490"></span><span class="anchor" id="line-491"></span><span class="anchor" id="line-492"></span><span class="anchor" id="line-493"></span><span class="anchor" id="line-494"></span><span class="anchor" id="line-495"></span><span class="anchor" id="line-496"></span><span class="anchor" id="line-497"></span><span class="anchor" id="line-498"></span><span class="anchor" id="line-499"></span><span class="anchor" id="line-500"></span><span class="anchor" id="line-501"></span><span class="anchor" id="line-502"></span><span class="anchor" id="line-503"></span><pre><span class="anchor" id="line-1-22"></span>[server-MultiSeat]
<span class="anchor" id="line-2-17"></span>name=Base (dummy) server for multi-seat configuration
<span class="anchor" id="line-3-14"></span>command=/usr/bin/X -audit 0 -layout MultiSeat vt09
<span class="anchor" id="line-4-13"></span>flexible=false
<span class="anchor" id="line-5-10"></span>handled=false
<span class="anchor" id="line-6-10"></span>
<span class="anchor" id="line-7-10"></span>[server-Seat0]
<span class="anchor" id="line-8-10"></span>name=Seat 0 server
<span class="anchor" id="line-9-10"></span>command=/usr/bin/X -br -audit 0 -layout Seat.0 -sharevts -novtswitch vt09
<span class="anchor" id="line-10-8"></span>flexible=false
<span class="anchor" id="line-11-8"></span>
<span class="anchor" id="line-12-8"></span>[server-Seat1]
<span class="anchor" id="line-13-8"></span>name=Seat 1 server
<span class="anchor" id="line-14-7"></span>command=/usr/bin/X -br -audit 0 -layout Seat.1 -sharevts -novtswitch vt09
<span class="anchor" id="line-15-7"></span>flexible=false</pre><span class="anchor" id="line-504"></span><span class="anchor" id="line-505"></span><p class="line862">All of these use the "-audit 0" parameter only because that's what's used in the original <tt class="backtick">gdm.conf</tt> file. I couldn't tell you what the exact impact of the parameter is: I'm just repeating it like a parrot. The "-br" flag is also used in <tt class="backtick">gdm.conf</tt>, but I can tell you what it's for: it causes the X session to start with a black screen instead of that utterly ghastly black-and-white stipple pattern. The "-br" flag is your friend, but it's meaningless for the dummy server, since nobody will ever see what's displayed on that screen. <span class="anchor" id="line-506"></span><span class="anchor" id="line-507"></span><p class="line874">I've chosen to run all these X sessions on vt09. This is somewhat arbitrary, but it works. All the sessions need to be on the same VT, but it doesn't really matter which one. It's even less important given that manual VT switching has been disabled. <span class="anchor" id="line-508"></span><span class="anchor" id="line-509"></span><p class="line874">All the server specifications have "flexible=false", since this has (as I understand it) to do with whether additional X servers can be launched on demand. This is closely tied to automatic VT allocation, and so it gets disabled for the same reason that all other VT-switching stuff is disabled. <span class="anchor" id="line-510"></span><span class="anchor" id="line-511"></span><p class="line862">The "handled=false" on the dummy server simply means not to bother running the <tt class="backtick">gdm</tt> login program on that server. The server is simply started and hangs around doing nothing other than being the special "first X session" which holds the hardware probe information (or whatever else is special to the first X session). <span class="anchor" id="line-512"></span><span class="anchor" id="line-513"></span><p class="line874">The "-sharevts" and "-novtswitch" flags aren't documented. So far as I can tell, the "-sharevts" flag warns the X server that it is about to start up a session on a VT that is already in use by another X server, and to behave accordingly. I suspect that the "-novtswitch" flag prevents the server from activating its VT at startup, and reverting to the old VT at shutdown. <span class="anchor" id="line-514"></span><span class="anchor" id="line-515"></span><p class="line862">Ultimately these settings are supposed to work together in the following way. The servers are started up (by <tt class="backtick">gdm</tt>) in the specified order, and shut down in the reverse order. Thus, the dummy server is always the first to start and last to stop. When the dummy server starts, it switches to its VT (vt09 here); when it ends, it switches back to the VT from which it came. The "Seat<em>N</em>" servers, on the other hand, assume that the shared VT is already current, thus the "-novtswitch" flag. <span class="anchor" id="line-516"></span><span class="anchor" id="line-517"></span><p class="line867">
<h4 id="Concluding_Remarks">Concluding Remarks</h4>
<span class="anchor" id="line-518"></span><p class="line862">Having made all those changes, the simplest thing to do is reboot into them. Do bear in mind that you will no longer have the luxury of switching to a spare VT to do a little work on the side. It's a bit unsettling to be making changes to things like <tt class="backtick">xorg.conf</tt> and the <tt class="backtick">gdm</tt> configuration from within an X session, but it can be done. <span class="anchor" id="line-519"></span><span class="anchor" id="line-520"></span><p class="line862">If your configuration doesn't work, it may leave you with a hung system. Under these circumstances, it's nice to be able to at least attempt a remote login via ssh, if you have the luxury of additional computers and a local network. If not, you may be obliged to press the reset button and try again. To prevent the same lockup from happening again and again, press the "esc" key while <tt class="backtick">grub</tt> is loading (at boot time) to get the boot menu. If you select a "recovery" option from the <tt class="backtick">grub</tt> menu, you'll boot into a root shell instead of starting up all the services. This should at least give you the opportunity to restore your original configuration if all else fails. <span class="anchor" id="line-521"></span><span class="anchor" id="line-522"></span><p class="line874">The multiseat system described here is far from elegant, and support for the concept in X (and Linux for that matter) is still in its infancy. Even so, this is the first real success I've had in setting up a multiseat system. Hopefully people will start to realise what a good idea this is -- especially with the proliferation of multi-core CPUs -- and the next LTS release of Ubuntu will have the benefit of really first-class multiseat support. <span class="anchor" id="line-523"></span><span class="anchor" id="line-524"></span><p class="line867">
<h3 id="Userful.27s_desktop-multiplier">Userful's desktop-multiplier</h3>
<span class="anchor" id="line-525"></span><p class="line862">Userful's desktop-multiplier is a commercial product that is far more stable but not open source. They do however give away <a class="http" href="http://userful.com/products/free-2-user">free-for-personal use license keys</a>. It can be found in multiverse in dapper-updates. Until you register (free for personal use) it will also popup a nag screen every thirty minutes. To install: <span class="anchor" id="line-526"></span><span class="anchor" id="line-527"></span><ol type="1"><li>Enable dapper-updates multiverse <span class="anchor" id="line-528"></span></li><li><p class="line862">Install the <tt>desktop-multiplier</tt> package <span class="anchor" id="line-529"></span></li><li>Restart your computer <span class="anchor" id="line-530"></span></li><li>Follow the instructions <span class="anchor" id="line-531"></span><span class="anchor" id="line-532"></span></li></ol><p class="line862">Since the multiverse does not always include the most current version you can <a class="http" href="http://userful.com/download/dl?p=dm-ubuntu">download directly from their website</a>. <span class="anchor" id="line-533"></span><span class="anchor" id="line-534"></span><ol type="1"><li>Follow the instructions <span class="anchor" id="line-535"></span><span class="anchor" id="line-536"></span><span class="anchor" id="line-537"></span></li></ol><p class="line867">
<h2 id="Ubuntu_5.10_.28Breezy_Badger.29_and_Ubuntu_5.04_.28Hoary_Hedgehog.29">Ubuntu 5.10 (Breezy Badger) and Ubuntu 5.04 (Hoary Hedgehog)</h2>
<span class="anchor" id="line-538"></span><p class="line862">There is a package written specifically for the HP 441 computers that is available in these versions of called <tt>multiseat</tt>. <span class="anchor" id="line-539"></span><span class="anchor" id="line-540"></span><p class="line867">
<h2 id="Other_implementations">Other implementations</h2>
<span class="anchor" id="line-541"></span><ul><li><p class="line891"><a class="http" href="http://www.tldp.org/HOWTO/XFree-Local-multi-user-HOWTO/index.html">Backstreet Ruby docs</a> - needs a kernel patch and outdated as of X.org 7.0/6.9 <span class="anchor" id="line-542"></span></li><li><p class="line891"><a class="http" href="http://netpatia.blogspot.com/2006/09/multiseat-computer-with-ubuntu.html">Multiseat with dual head cards</a> - Multiseat solution using Xephyr <span class="anchor" id="line-543"></span></li><li><p class="line891"><a href="/community/MultiseatOneCard">MultiseatOneCard</a> - Another multiseat solution using Xephyr on Ubuntu 10.04 LTS (lucid) with only one video-card <span class="anchor" id="line-544"></span></li><li><p class="line891"><a class="http" href="http://userful.com/products/dm">Desktop Multiplier</a> by Userful - closed source, but free for limited personal use available in 6.06 and above, see the above instructions for installation <span class="anchor" id="line-545"></span></li><li><p class="line891"><a class="http" href="http://www.michaeltinsay.com/index.php?q=Multiseat-Gutsy-Xephyr">Multiseat in Gutsy using ATI Radeon Cards</a> <span class="anchor" id="line-546"></span><span class="anchor" id="line-547"></span></li></ul><p class="line867">
<h2 id="Known_to_be_working_hardware">Known to be working hardware</h2>
<span class="anchor" id="line-548"></span><span class="anchor" id="line-549"></span><p class="line862">Very few modern motherboards allow both onboard and PCI express VGA cards to work at the same time. If you build a new system, you might either buy motherboard with multiple PCIx slots (such as <a class="http" href="http://www.newegg.com/Product/Product.aspx?Item=N82E16813186176">Foxconn Inferno Katana LGA 1156 Intel P55 ATX Intel Motherboard</a>) or use low budget motherboards that allows both onboard and PCIx VGA cards to work. There is also untested method of using USB VGA cards. <span class="anchor" id="line-550"></span><span class="anchor" id="line-551"></span><p class="line874">Here is list of the motherboard/PCIx VGA card combination that are known to work: <span class="anchor" id="line-552"></span><ul><li>TBD1 <span class="anchor" id="line-553"></span></li><li>TBD2 <span class="anchor" id="line-554"></span><span class="anchor" id="line-555"></span></li></ul><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-556"></span><a href="/community/CategoryXwindowSystem">CategoryXwindowSystem</a> CategoryX <span class="anchor" id="line-557"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">MultiseatX  (last edited 2011-08-11 06:16:20 by <span title="https://login.launchpad.net/+id/DYkfwnW @ bzq-179-137-34.static.bezeqint.net[212.179.137.34]"><a class="interwiki" href="https://launchpad.net/~skliarie" title="https://login.launchpad.net/+id/DYkfwnW @ bzq-179-137-34.static.bezeqint.net[212.179.137.34]">skliarie</a></span>)</p>

<ul class="pagelinks">
<li><a class="nbinfo" href="/community/MultiseatX?action=info" rel="nofollow">Page History</a></li>
</ul>

<div id="pagebottom"></div>
</div>


<div id="footer">
<hr width="550px">

  <div id="ubuntulinks">
	<p>
	      The material on this wiki is available under a free license, see <a href="https://help.ubuntu.com/community/License">Copyright / License</a> for details<br /><b>You</b> can contribute to this wiki, see <a href="https://help.ubuntu.com/community/WikiGuide">Wiki Guide</a> for details
	</p><br>
  </div>
<script src="https://ssl.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1018242-7";
urchinTracker();
__utmSetVar('UbuntuWiki');
</script>
<script type="text/javascript">
function togglebar() {
    obj = document.getElementById('editbar');
    obj2 = document.getElementById('showbarspan');
    obj3 = document.getElementById('showbar');
    if (obj.style.position == 'fixed') {
        obj.style.position = 'static';
	obj3.style.bottom = '0';
        obj2.innerHTML = 'Show';
    } else {
        obj.style.position = 'fixed';
        obj2.innerHTML = 'Hide';
        obj3.style.bottom = '25px';
    }
    return false;
}
</script>


</div> <!-- footer -->
</div> <!-- layout -->
<img id="bottomcap" alt="" src="https://help.ubuntu.com/htdocs/ubuntunew/img/cap-bottom.png">
</div> <!-- round -->
</body>
</html>

